package com.PAT.UnSatisfying;

import com.sun.istack.internal.NotNull;

import java.util.Scanner;

/**
 * Created with IntelliJ IDEA.
 *
 * @Author: zjz
 * @Date: 2021/11/17/10:01
 * @Description:
 * @Target: 给定任一个各位数字不完全相同的 4 位正整数，
 * 如果我们先把 4 个数字按非递增排序，再按非递减排序，然后用第 1 个数字减第 2 个数字，将得到一个新的数字。
 * 一直重复这样做，我们很快会停在有“数字黑洞”之称的 6174
 */
public class 数字黑洞 {
    public static void main(String[] args) {
        // 逆序的话直接使用StringBuffer就好了
        Scanner input = new Scanner(System.in);
        String s1 = input.next();
        String s2 = SortOut(s1);
        String s3 = SortReserveOut(s2);
        if (s1.equals("6174")){
            System.out.println(s3+" - "+s2+" = "+ CountString(s2,s3));
        }else if (s1.equals(s2)) {
            System.out.println("0000");
        }else {
            while (!"6174".equals(s1)){
                System.out.println(s3+" - "+s2+" = "+ CountString(s2,s3));
                s1 = CountString(s2,s3);
                s2 = SortOut(s1);
                s3 = SortReserveOut(s2);
            }
        }




    }

    // 输入两字符串,进行计算,输出一个字符串
    public static String CountString(String s1,String s2){
        String ss = new String();

        ss+=(Integer.parseInt(s2)-Integer.parseInt(s1));

        if (ss.equals("0")){
            ss ="0000";
        }else if(ss.length()<4){
            for (int i = 0; i < 4-ss.length(); i++) {
                ss = "0"+ss;
            }

        }
        return ss;
    }






    // 直接使用桶排序
    // 入参字符串,出参一个字符串
    public static String SortOut(String ss){
        String s1 = "";
        int[] arr = new int[10];

        for (int i = 0; i < ss.length(); i++) {
            arr[ss.charAt(i)-'0']++;
        }

        for (int i = 0; i < arr.length; i++) {
            if (arr[i]!=0){
                for (int j = 0; j < arr[i]; j++) {
                    s1+=i;
                }
            }
        }

        if(s1.length()<4){
            for (int i = 0; i < 4-s1.length(); i++) {
                s1 = "0"+s1;
            }

        }

        return s1;

    }



    public  static String SortReserveOut(String ss){
        StringBuffer stringBuffer = new StringBuffer(ss);
        return new String(stringBuffer.reverse());
    }





}
